跳到主要内容

兼容性

备注

过时的,不用在考虑 IE 了。

阻止事件冒泡

function stopPropagation(event) {
if (event.stopPropagation) {
event.stopPropagation(); // ✅
} else {
event.cancelBubble = true; // ie
}
}

阻止默认事件

function preventDefault(event) {
if (event.stopPropagation) {
event.preventDefault(); // ✅
} else {
event.returnValue = true; // ie
}
}

target

function target(event) {
return event.target || event.srcElement;
}

绑定事件

function addEventListener(target, type, func) {
if (target.addEventListener) {
target.addEventListener(type, func, false); // ✅
} else if (target.attachEvent) {
target.attachEvent("on" + type, func); // ie6到ie8
} else {
target["on" + type] = func; // ie5
}
}

删除事件

function removeEventListener(target, type, func) {
if (target.removeEventListener) {
target.removeEventListener(type, func, false); // ✅
} else if (target.detachEvent) {
target.detachEvent("on" + type, func); // ie6到ie8
} else {
target["on" + type] = null; // ie5
}
}

鼠标单击

IE 认为:左键为 1,右键为 2,中键(滚轮按下)为 4。 FF 认为:左键为 0,右键为 2,中键(滚轮按下)为 1。

鼠标滚动事件

function addMousewheel(target, type, func) {
let wheelTimer = 0;

function getWheelDelta(event: any) {
return event.wheelDelta ? -event.wheelDelta / 120 : event.detail / 3;
}

// ✅
this.addEvent(obj, "DOMMouseScroll", function (event: any) {
callback(getWheelDelta(event));
});

// IE
this.addEvent(obj, "mousewheel", (event: any) => {
clearTimeout(wheelTimer);
if (event.deltaY > 0) {
wheelTimer = setTimeout(function () {
callback(getWheelDelta(event));
}, 100);
} else if (event.deltaY < 0) {
wheelTimer = setTimeout(function () {
callback(getWheelDelta(event));
}, 100);
}
});
}

鼠标点击坐标

event.x, event.y[IE] event.pageX,event.pageY[Moz]

鼠标点击的相对位置

IE 中取鼠标点击的相对位置,使用 event 对象的 event.offsetX 和 event.offsetY Moz 中取鼠标点击的相对位置,使用 event 对象的 event.layerX 和 event.layerY

键盘 key 值

event.keyCode 和 event.which